@风铃
2年前 提问
1个回答

常见的指纹识别方式有哪些

齐士忠
2年前

常见的指纹识别方式有以下几种:

特定文件的 MD5

一些网站的特定图片文件、js 文件、CSS 等静态文件,如 favicon.ico、css、logo.ico、js 等文件一般不会修改,通过爬虫对这些文件进行抓取并比对 md5 值,如果和规则库中的 Md5 一致则说明是同一 CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的 CMS 会修改这些文件。

正常页面或错误网页中包含的关键字

先访问首页或特定页面如 robots.txt 等,通过正则的方式去匹配某些关键字,如 Powered by Discuz、dedecms 等。\ 或者可以构造错误页面,根据报错信息来判断使用的 CMS 或者中间件信息,比较常见的如 tomcat 的报错页面。

请求头信息的关键字匹配

根据网站 response 返回头信息进行关键字匹配,whatweb 和 Wappalyzer 就是通过 banner 信息来快速识别指纹,之前 fofa 的 web 指纹库很多都是使用的这种方法,效率非常高,基本请求一次就可以,但搜集这些规则可能会耗时很长。而且这些 banner 信息有些很容易被改掉。

根据 response header 一般有以下几种识别方式:

  • 查看 http 响应报头的 X-Powered-By 字段来识别;

  • 根据 Cookies 来进行判断,比如一些 waf 会在返回头中包含一些信息,如 360wzws、Safedog、yunsuo 等;

  • 根据 header 中的 Server 信息来判断,如 DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm 等;

  • 根据 WWW-Authenticate 进行判断,一些路由交换设备可能存在这个字段,如 NETCORE、huawei、h3c 等设备。

部分 URL 中包含的关键字

比如 wp-includes、dede 等 URL 关键特征。

通过规则库去探测是否有相应目录,或者根据爬虫结果对链接 url 进行分析,或者对 robots.txt 文件中目录进行检测等等方式,通过 url 地址来判别是否使用了某 CMS,比如 wordpress 默认存在 wp-includes 和 wp-admin 目录,织梦默认管理后台为 dede 目录,solr 平台可能使用 /solr 目录,weblogic 可能使用 wls-wsat 目录等。

开发语言的识别

web 开发语言一般常见的有 PHP、jsp、aspx、asp 等,常见的识别方式有:

  • 通过爬虫获取动态链接进行直接判断是比较简便的方法。比如:asp 判别规则如下]?href=(‘|”)[^http][^>]?.asp(?|#|\1),其他语言可替换相应 asp 即可。

  • 通过 X-Powered-By 进行识别比较常见的有 X-Powered-By: ASP.NET 或者 X-Powered-By: PHP/7.1.8

  • 通过 Set-Cookie 进行识别

这种方法比较常见也很快捷,比如 Set-Cookie 中包含 PHPSSIONID 说明是 php、包含 JSESSIONID 说明是 java、包含 ASP.NET_SessionId 说明是 aspx 等。